package hunternif.mc.atlas;
import hunternif.mc.atlas.core.AtlasDataHandler;
import hunternif.mc.atlas.core.PlayerEventHandler;
import hunternif.mc.atlas.ext.*;
import hunternif.mc.atlas.item.ItemAtlas;
import hunternif.mc.atlas.item.ItemEmptyAtlas;
import hunternif.mc.atlas.item.RecipeAtlasCloning;
import hunternif.mc.atlas.item.RecipeAtlasCombining;
import hunternif.mc.atlas.marker.GlobalMarkersDataHandler;
import hunternif.mc.atlas.marker.MarkersDataHandler;
import hunternif.mc.atlas.marker.NetherPortalWatcher;
import hunternif.mc.atlas.network.PacketDispatcher;
import hunternif.mc.atlas.registry.MarkerRegistry;
import hunternif.mc.atlas.registry.MarkerTypes;
import hunternif.mc.atlas.util.Log;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.RecipeSorter;
import java.io.File;
import static net.minecraftforge.oredict.RecipeSorter.Category.SHAPELESS;
@Mod(modid=AntiqueAtlasMod.ID, name=AntiqueAtlasMod.NAME, version=AntiqueAtlasMod.VERSION)
public class AntiqueAtlasMod {
public static final String ID = "antiqueatlas";
public static final String NAME = "Antique Atlas";
public static final String CHANNEL = ID;
public static final String VERSION = "@VERSION@";
@Instance(ID)
public static AntiqueAtlasMod instance;
@SidedProxy(clientSide="hunternif.mc.atlas.ClientProxy", serverSide="hunternif.mc.atlas.CommonProxy")
public static CommonProxy proxy;
public static final SettingsConfig settings = new SettingsConfig();
public static final AtlasDataHandler atlasData = new AtlasDataHandler();
public static final MarkersDataHandler markersData = new MarkersDataHandler();
public static final ExtBiomeDataHandler extBiomeData = new ExtBiomeDataHandler();
public static final GlobalMarkersDataHandler globalMarkersData = new GlobalMarkersDataHandler();
public static ItemAtlas itemAtlas;
public static ItemEmptyAtlas itemEmptyAtlas;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
Log.setModID(ID);
MarkerRegistry.INSTANCE.getClass(); // load the class
MarkerTypes.INSTANCE.getClass(); // ...
proxy.preInit(event);
settings.load(new File(proxy.configDir, "settings.cfg"));
if (settings.itemNeeded) {
itemAtlas = (ItemAtlas) new ItemAtlas()
.setRegistryName(ID, "antique_atlas").setUnlocalizedName("antiqueAtlas");
itemEmptyAtlas = (ItemEmptyAtlas) new ItemEmptyAtlas()
.setRegistryName(ID, "empty_antique_atlas").setUnlocalizedName("emptyAntiqueAtlas")
.setCreativeTab(CreativeTabs.TOOLS);
GameRegistry.register(itemAtlas);
GameRegistry.register(itemEmptyAtlas);
}
}
@EventHandler
public void init(FMLInitializationEvent event){
PacketDispatcher.registerPackets();
proxy.init(event);
if (settings.itemNeeded) {
GameRegistry.addShapelessRecipe(new ItemStack(itemEmptyAtlas), Items.BOOK, Items.COMPASS);
RecipeSorter.register("antiqueatlas:atlascloning", RecipeAtlasCloning.class, SHAPELESS, "after:minecraft:shapeless");
GameRegistry.addRecipe(new RecipeAtlasCloning());
RecipeSorter.register("antiqueatlas:atlascombining", RecipeAtlasCombining.class, SHAPELESS, "after:minecraft:shapeless");
RecipeAtlasCombining recipeCombining = new RecipeAtlasCombining();
GameRegistry.addRecipe(recipeCombining);
MinecraftForge.EVENT_BUS.register(recipeCombining);
} else {
MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());
}
MinecraftForge.EVENT_BUS.register(atlasData);
MinecraftForge.EVENT_BUS.register(markersData);
MinecraftForge.EVENT_BUS.register(extBiomeData);
MinecraftForge.EVENT_BUS.register(globalMarkersData);
MinecraftForge.EVENT_BUS.register(new DeathWatcher());
MinecraftForge.EVENT_BUS.register(new StructureWatcher("EndCity", 1, MarkerTypes.END_CITY_FAR, "gui.antiqueatlas.marker.endcity").setTileMarker(MarkerTypes.END_CITY, "gui.antiqueatlas.marker.endcity"));
MinecraftForge.EVENT_BUS.register(new VillageWatcher());
MinecraftForge.EVENT_BUS.register(new NetherFortressWatcher());
MinecraftForge.EVENT_BUS.register(new NetherPortalWatcher());
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
proxy.postInit(event);
}
@Mod.EventHandler
public void onMissingMapping(FMLMissingMappingsEvent event) {
Log.info("Repairing missing mappings");
for (FMLMissingMappingsEvent.MissingMapping mapping : event.get()) {
String resourcePath = mapping.resourceLocation.getResourcePath();
if (mapping.type == GameRegistry.Type.ITEM) {
if ("antiqueatlas".equalsIgnoreCase(resourcePath)) {
mapping.remap(itemAtlas);
} else if ("emptyantiqueatlas".equalsIgnoreCase(resourcePath)) {
mapping.remap(itemEmptyAtlas);
}
}
}
}
}